package com.bite.forum.services;

import com.bite.forum.model.Message;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface IMessageService {
    /**
     * 发送消息
     * @param message 消息
     */
    void create(Message message);

    /**
     * 获取未读信息
     * @param receiveUserId 接收者Id
     * @return 未读信息数量
     */
    Integer selectUnreadCount(Long receiveUserId);

    /**
     * 获取接收者信息
     * @param receiveUserId 接收者Id
     * @return 接收者信息
     */
    List<Message> selectByReceiveUserId(Long receiveUserId);

    /**
     * 更新消息状态
     * @param id 消息Id
     * @param state 消息状态
     */
    void updateStateById(Long id, Byte state);

    /**
     * 根据Id获取消息
     * @param id 消息Id
     * @return 消息
     */
    Message selectById(Long id);

    /**
     * 发送回复消息
     * @param repliedId 被回复消息Id
     * @param message 回复对象
     */
    @Transactional
    void reply(Long repliedId, Message message);
}
